QPython+uiautomator2安卓手机自动化脚本编写

您所在的位置:网站首页 安卓 自动化 软件开发工具 QPython+uiautomator2安卓手机自动化脚本编写

QPython+uiautomator2安卓手机自动化脚本编写

2024-06-02 06:50:41| 来源: 网络整理| 查看: 265

QPython+uiautomator2安卓手机自动化脚本编写 开始手机端运行不需要尝试的换个思路 使用图像匹配常见问题

uiautomator2使用说明:https://github.com/openatx/uiautomator2

前置条件:电脑安装了adb,可以使用adb devices命令 额外说明:本篇论述的是在手机数据线与电脑互联的情况下,用电脑控制手机的自动化 PS:和QPython好像没有太大关系,通过WIFI互联还有待研究。如果要编写不连接电脑就可以实现自动化的脚本,可以使用Autojs或者按键精灵。

开始

首先下载QPython_3C发行版:https://gitee.com/buddygr/qpython-3c 请添加图片描述

由于QPYPI安装uiautomator2库失败或使用时报错,为此我直接从电脑上复制库文件到手机上去。(这是前面尝试的,主要是安装PIL报错,后来我感觉应该可以先装作者gitee上的科学计算包把PIL先装了,再直接pip install uiautomator2应该可以成功吧)

如下打开终端,使用platform库可以看到: 推荐电脑使用和QPython一样的python版本,如下,QPython是3.10.5 64bit 且是Linux版的,电脑去装一个Windows版的就行(好像也没有Linux版的,需要手动编译),然后使用此版本的Python进行开发。请添加图片描述 接着使用pycharm创建新项目,新环境中安装uiautomator2及uiautomator2[image](待会儿我把整个site-packages文件夹复制过去)

(注意在新环境中安装库,可以使用pycharm安装,或者是在新环境的pip.exe目录下进行pip安装) 请添加图片描述 请添加图片描述

接着

手机数据线连接电脑,手机打开开发者选项,并且打开USB调试 请添加图片描述 然后 电脑adb连接手机 adb devices,并查看序列号 请添加图片描述 再然后 再次输入python -m uiautomator2 init 或者 uiautomator2 init(在Scripts文件夹中) 即init 所有已经连接到电脑的设备,安装相应的软件(ATX) 请添加图片描述 再 电脑端编写demo1.py如下:

# !/usr/bin/env python # -*- coding: utf-8 -*- """ Created by Pycharm @python-version 3.8 @author lqh @time 2022/6/30 12:45 """ import uiautomator2 as u2 d = u2.connect("序列号") d.screen_off() # 关闭屏幕

运行代码,观察手机。

上述操作成功后,将代码改为,待会儿给手机运行

# !/usr/bin/env python # -*- coding: utf-8 -*- """ Created by Pycharm @python-version 3.8 @author lqh @time 2022/6/30 12:45 """ import uiautomator2 as u2 d = u2.connect('http://0.0.0.0:7912') # 连接手机本地端口 d.screen_off() # 关闭屏幕

假如上述文件名为demo1.py,接着将demo1.py 复制到手机上去。

手机端运行

点击文件,你可以随便创建文件夹和文件 请添加图片描述 我创建了一个my_pro的文件夹,然后我要把demo1.py复制过去 请添加图片描述 观察上述文件夹的路径,它是: /storage/emulated/0/Android/data/indi.czc.qpython/my_pro 通过数据线使用adb push到手机,在cmd中输入如下命令

adb push C:\Users\xxxx\pro\demo1.py /storage/emulated/0/Android/data/indi.czc.qpython/my_pro

QPython中打开如下,现在还运行不了,因为没有库 请添加图片描述 长按终端,使用shell终端,我们来查看系统环境变量请添加图片描述 输入env,发现有两处不在data文件夹下(需root权限才能修改),可观察到PYTHONPATH里面有一个就是刚刚创建文件的地方,我们这里放site-packages,请添加图片描述

把库复制过去,同样使用adb push 命令

adb push C:\Users\xxx\pro\Lib\site-packages\. /storage/emulated/0/Android/data/indi.czc.qpython/lib/python3.10/site-packages 不需要尝试的

此时去运行demo1.py,PIL报错如下: 请添加图片描述 我原先想着先用QPYPI终端把Pillow卸载了,再使用shell终端重新下载

python3 -m pip install --upgrade pip python3 -m pip install --upgrade Pillow

但是安装失败 请添加图片描述

换个思路

不能直接用windows电脑上的PIL库,我感觉应该是不同系统编译的库文件不兼容,还是直接去下载别人编译好的吧 QPython 3C 3.6.3 · 乘着船/QPython 3C - Gitee.com到作者的链接下下载科学计算包,里面有numpy、matplotlib、Pillow等。下载完后解压到手机任意文件夹里,使用shell终端cd到此文件夹下,再使用Python运行setup.py,即输入命令python setup.py,该脚本会先卸载你下载的科学计算包,再复制压缩包里的科学计算库文件到你的手机python库目录下 此时运行uiautomator2已经不会报错,demo1.py脚本可以运行,代码如下

# !/usr/bin/env python # -*- coding: utf-8 -*- """ Created by Pycharm @python-version 3.10.5 @author lqh @time 2022/6/30 12:45 """ import uiautomator2 as u2 d = u2.connect('http://0.0.0.0:7912') # 连接手机本地端口 d.app_start('com.tencent.mm') # 打开微信 d.screen_off() # 关闭屏幕 使用图像匹配

(此功能似乎还处于测试阶段) 同样以微信为例,任务是打开腾讯新闻,然后点击设置,如下图 请添加图片描述 我们用手机的照片裁剪(手机的照片似乎和电脑的图片有差别)功能,先把此图标裁剪下来,如图: 请添加图片描述 我们先用电脑测试一下,同样注意手机数据线连接电脑,打开开发者选项(好像也不是必须的),然后adb devices连接上了手机。

把上面的图标发送到电脑,假如说我把它保存到了桌面,它现在的路径是C:\Users\Itrains\Desktop\setting1.jpg

我们电脑编写如下代码:

# !/usr/bin/env python # -*- coding: utf-8 -*- """ Created by Pycharm @python-version 3.8 @author lqh @time 2022/7/1 10:19 """ import uiautomator2 as u2 d = u2.connect("序列号") d.implicitly_wait(40.0) # 最长等待时间,也可以通过d.settings['wait_timeout'] = 10.0 修改,默认10.0 d.app_stop('com.tencent.mm') # 先关闭微信 d.app_start('com.tencent.mm') # 再启动微信 d(text='腾讯新闻').click() # 点击腾讯新闻,建议使用WEditor来获取此代码,具体参见uiautomator2的github文档 imdata=r"C:\Users\Itrains\Desktop\setting1.jpg" print(d.image.match(imdata)) # 置信度大于0.9的才会返回 d.image.click(imdata, timeout=20)

运行前,这里首先要注意一点,就是微信加载好后,腾讯新闻的公众号必须要是在屏幕中能够看到,否则,你需要手动划到那个能看到它的位置

运行,findit未找到,报错如下:

C:\Users\Itrains\Desktop\mycode\python\project_adb\pro\Scripts\python.exe C:/Users/Itrains/Desktop/mycode/python/project_adb/pro/demo2.py Traceback (most recent call last): File "C:\Users\Itrains\Desktop\mycode\python\project_adb\pro\demo2.py", line 18, in print(d.image.match(imdata)) # 置信度大于0.9的才会返回 File "C:\Users\Itrains\Desktop\mycode\python\project_adb\pro\lib\site-packages\uiautomator2\image.py", line 253, in match fi = findit.FindIt(engine=['template'], NameError: name 'findit' is not defined

这是因为在源码中findit被注释了,把注释去掉即可运行 请添加图片描述 还有就是手机端不能运行上述代码,因为无法使用cv2,目前作者似乎还没有推出支持的cv2库,科学计算包也是最近才发布的。

常见问题

报错如下

thon/my_pro/demo1.py" && exit < [W 220701 11:58:47 __init__:218] [pid:565 7] atx-agent has something wrong, auto re covering Traceback (most recent call last): File "/storage/emulated/0/Android/data/ indi.czc.qpython/lib/python3.10/site-pack ages/adbutils/_adb.py", line 61, in _safe _connect return self._create_socket() File "/storage/emulated/0/Android/data/ indi.czc.qpython/lib/python3.10/site-pack ages/adbutils/_adb.py", line 53, in _crea te_socket s.connect((adb_host, adb_port)) ConnectionRefusedError: [Errno 111] Conne ction refused During handling of the above exception, a nother exception occurred: Traceback (most recent call last): File "/storage/emulated/0/Android/data/ indi.czc.qpython/my_pro/demo1.py", line 1 3, in d.app_start('com.tencent.mm') File "/storage/emulated/0/Android/data/ indi.czc.qpython/lib/python3.10/site-pack ages/uiautomator2/__init__.py", line 1429 , in app_start info = self.app_info(package_name) File "/storag

在这里插入图片描述 打开手机上下载的ATX,可以看到 在这里插入图片描述 这时cmd中要输入python -m uiautomator2 init 或者 uiautomator2 init(注意系统要能找到uiautomator2.exe)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭